/*package logica;

public class Cliente {

}*/

package entidades;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
//import java.util.LinkedList;
import java.util.List;

import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

public class Cliente implements KvmSerializable{
	
	/**
	 * 
	 */
	
	//atributos
	private int idCliente;
	private String usuario;
	private String clave;
	private long documento;
	private String email;
	private String texto;
	private boolean habilitado;
	private VecTelefono telefonos;// = new ArrayList<String>();
	private String direccion;
	
	
	
	//constructor completo
	public Cliente(int idCliente, String usuario, String clave, long documento,
			String email, String texto, boolean habilitado,
			VecTelefono telefonos, String direccion) {
		this.idCliente = idCliente;
		this.usuario = usuario;
		this.clave = clave;
		this.documento = documento;
		this.email = email;
		this.texto = texto;
		this.habilitado = habilitado;
		this.telefonos = telefonos;
		this.direccion = direccion;
	}
	
	//constructor sinID
		public Cliente(String usuario, String clave, long documento,
				String email, String texto, boolean habilitado,
				VecTelefono telefonos, String direccion) {
			
			this.usuario = usuario;
			this.clave = clave;
			this.documento = documento;
			this.email = email;
			this.texto = texto;
			this.habilitado = habilitado;
			this.telefonos = telefonos;
			this.direccion = direccion;
		}

	//constructor por defecto
	public Cliente() {
		idCliente =0;
		usuario = "";
		clave = "";
		documento =0;
		email ="";
		texto="";
		habilitado = false;
		telefonos =new VecTelefono();
		direccion = "";
	}
	
	//getters y setters

	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}

	public int getIdCliente() {
		return idCliente;
	}
		
	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getClave() {
		return clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public long getDocumento() {
		return documento;
	}

	public void setDocumento(long documento) {
		this.documento = documento;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public boolean getHabilitado() {
		return habilitado;
	}

	public void setHabilitado(boolean habilitado) {
		this.habilitado = habilitado;
	}

	public VecTelefono getTelefonos() {
		return telefonos;
	}

	public void setTelefonos(VecTelefono telefonos) {
		this.telefonos = telefonos;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	
	

	

	//tostring
	@Override
	public String toString() {
		return "Cliente [idCliente=" + idCliente + ", usuario=" + usuario
				+ ", clave=" + clave + ", documento=" + documento + ", email="
				+ email + ", texto=" + texto + ", habilitado=" + habilitado
				+ ", telefonos=" + telefonos + ", direccion=" + direccion + "]";
	}

	@Override
	public Object getProperty(int arg0) {
		switch(arg0)
		{
		case 0:
			return idCliente;
		case 1:
			return usuario;
		case 2:
			return clave;
		case 3:
			return documento;
		case 4:
			return email;
		case 5:
			return texto;
		case 6:
			return habilitado;
		case 7:
			return telefonos;
		case 8:
			return direccion;
		
			
		}
		
		
		
		
		return null;
	}

	@Override
	public int getPropertyCount() {
		// TODO Auto-generated method stub
		return 9;
	}

	@Override
	public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo arg2) {
		switch (index)
		{
		case 0:
			arg2.type = PropertyInfo.INTEGER_CLASS;
			arg2.name = "idCliente";
			break;
		case 1:
			arg2.type = PropertyInfo.STRING_CLASS;
			arg2.name = "usuario";
			break;
		case 2:
			arg2.type = PropertyInfo.STRING_CLASS;
			arg2.name = "clave";
			break;
		case 3:
			arg2.type = PropertyInfo.LONG_CLASS;
			arg2.name = "documento";
			break;
		case 4:
			arg2.type = PropertyInfo.STRING_CLASS;
			arg2.name = "email";
			break;
		case 5:
			arg2.type = PropertyInfo.STRING_CLASS;
			arg2.name = "texto";
			break;
		case 6:
			arg2.type = PropertyInfo.BOOLEAN_CLASS;
			arg2.name = "habilitado";
			break;
		case 7:
			arg2.type = VecTelefono.class;//LinkedList.class;
			arg2.name = "telefonos";
			break;
		case 8:
			arg2.type = PropertyInfo.STRING_CLASS;
			arg2.name = "direccion";
			break;
		default: 
			break;
		}
		
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public void setProperty(int index, Object arg1) {
		
		switch(index)
		{
		case 0:
			idCliente = Integer.parseInt(arg1.toString());
			
			break;
		case 1:
			usuario = arg1.toString();
			break;
		case 2:
			clave = arg1.toString();
			break;
		case 3:
			documento = Long.parseLong(arg1.toString());
			break;
		case 4:
			email = arg1.toString();
			break;
		case 5:
			texto = arg1.toString();
			break;
		case 6:
			habilitado = (Boolean)arg1;
			break;
		case 7:
			for(int i =0; i< ((List<String>)arg1).size(); i++)
			{
				telefonos.add(arg1.toString());
				
			}
			break;
		case 8:
			direccion = arg1.toString();
			break;
		default: 
			break;
		}
		
		
		
	}

	
	
}
